/**
 * 用于生产环境下，检测index.html中引入的js文件是否更新，如果更新了，则弹窗提示用户刷新页面
 * 原理是每次打包之后index.html中的引入的js文件名称会发生变化，判断xxx.1bf8e3ce.js的1bf8e3ce是否变化
 */
if (import.meta.env.MODE === 'production') {
    let lastScriptSrc = []
    const srcRegex = /<script[^>]*\s+src="([^"]+)"/g; //用于匹配<script src="xxx"></script>中的src
    let timer
    const querySrc = () => {
        fetch('/?time=' + Date.now()).then(res => {
            return res.text()
            //这里因为.text()是异步的，所以需要使用Promise链来处理
        }).then(text => {
            let matchs = text.match(srcRegex) //匹配到的src的集合
            matchs.forEach((src, index) => {
                if (lastScriptSrc.length > 0) {
                    if (src !== lastScriptSrc[index]) {
                        alert('检测到系统更新，建议刷新页面后再使用')
                        clearInterval(timer) //当检测到有更新时，清除定时器，避免重复弹窗影响用户
                    }
                }
            });
            lastScriptSrc = matchs
        })
    }
    timer = setInterval(() => {
        querySrc()
    }, 10000)//五秒检查一次index.html中引入的js文件是否更新
}
